package com.nook.common.config;

import lombok.Getter;
import lombok.Setter;
import org.noear.solon.annotation.BindProps;
import org.noear.solon.annotation.Configuration;

import java.util.HashSet;
import java.util.Set;

@Setter
@Getter
@Configuration
@BindProps(prefix = "security")
public class SecurityConfig {
    /**
     * token相关的配置
     */
    private TokenConfig token;
    /**
     * ip地址相关的配置
     */
    private IpConfig ip;
    /**
     * 登录配置
     */
    private LogionConfig login;


    /**
     * token配置
     */
    @Setter
    @Getter
    public static class TokenConfig{
        /**
         * 放行路径, 不再被安全框架拦截
         */
        public Set<String> ignore = new HashSet<>();
    }

    /**
     * ip地址配置
     */
    @Setter
    @Getter
    public static class IpConfig{
        /**
         * 白名单
         */
        public Set<String> whites = new HashSet<>();
        /**
         * 黑名单
         */
        public Set<String> blacks = new HashSet<>();
    }

    /**
     * 登录配置
     */
    @Setter
    @Getter
    private static class LogionConfig{
        /**
         * 登录失败最大次数
         */
        private long errorCount;

        /**
         * 登录失败达最大次数后的锁定时长（单位：分钟）
         */
        private long lockTime;
    }

}
